Idea
A simple categorization for computers with single processors and multiple parallel processors. Does not exactly reflect the modern designs, but good enough for getting a general understanding.
SISD
Single Instruction, Single Data
A Processing Unit is a combination of an alu and a cu in this case. It also has its own memory.
Example: single-core microcontrollers, like the ATmega328 used in several popular arduino boards.
SIMD
Single Instruction, Multiple Data
A Processing Element is usually just an alu, no control logic. The cu is represented by the dot connecting them.
Example: parts of modern GPUs, say, the CUDA cores
MISD
Multiple Instruction, Single Data
Rarely used, most often found in safety-critical systems. The processing units are independent, have their own memory, and must come to the same conclusion to guarantee correct operation.
Example: the space shuttle flight computer. Couldn't find anything newer, if you do, please lmk.
MIMD
Multiple Instruction, Multiple Data
Modern multicore CPUs work like this. There are 2 primary types of MIMD systems:
- shared memory MIMD is used when you have a high-speed interconnect between the PUs, like in the processors
- distributed memory MIMD is often used in cluseters where the network is waaay slower than the memory
Example: Ryzen 5600.
Exception: socs have a SIMD GPU and a MIMD CPU.
Sources:
- wikipedia.org/wiki/flynn_taxonomy
- wikipedia.org/wiki/single_instruction,_single_data
- wikipedia.org/wiki/nvidia_cuda
- wikipedia.org/wiki/array_processor
- wikipedia.org/wiki/multiple_instruction,_multiple_data